import { Question } from "../interface";

const questions: Question[] = [
    {
        question: "下列哪个HTTP状态码表示资源未修改？",
        radios: [
            "200",
            "304",
            "404",
            "500"
        ],
        desc: "304 Not Modified 是协商缓存命中时的状态码"
    },
    {
        question: "关于HTTP/2的特性，错误的是：",
        radios: [
            "多路复用（Multiplexing）",
            "头部压缩（HPACK）",
            "强制使用HTTPS",
            "服务器推送（Server Push）"
        ],
        desc: "HTTP/2不强制HTTPS，但浏览器只支持HTTPS下的HTTP/2"
    },
    {
        question: "下列哪些头部属于CORS（跨域资源共享）相关？",
        radios: [
            "Access-Control-Allow-Origin",
            "Content-Security-Policy",
            "Origin",
            "X-Requested-With"
        ],
        muti: true,
        desc: "Content-Security-Policy是内容安全策略头部"
    },
    {
        question: "关于WebSocket握手过程，正确的是：",
        radios: [
            "使用HTTP Upgrade头",
            "首次握手可以携带自定义头部",
            "握手响应包含Sec-WebSocket-Accept",
            "默认使用80端口"
        ],
        muti: true,
        desc: "所有选项都是WebSocket握手的正确特性"
    },
    {
        question: "下列哪种请求会触发CORS预检（Preflight）？",
        radios: [
            "GET请求",
            "JSONP请求",
            "带自定义头部的POST请求",
            "表单提交"
        ],
        desc: "简单请求不需要预检，自定义头部属于复杂请求"
    },
    {
        question: "关于Cookie的属性，错误的是：",
        radios: [
            "Secure属性要求HTTPS传输",
            "HttpOnly禁止JavaScript访问",
            "SameSite=Lax允许部分跨站请求携带",
            "Domain默认为当前主机名"
        ],
        desc: "所有描述都正确，此题设计有误，应更换为其他错误描述"
    },
    {
        question: "实现CSRF防护的最佳方案是：",
        radios: [
            "验证Referer头",
            "使用验证码",
            "添加CSRF Token",
            "限制Cookie的SameSite属性"
        ],
        muti: true,
        desc: "所有选项都是有效的CSRF防护手段"
    },
    {
        question: "关于JWT（JSON Web Token），正确的是：",
        radios: [
            "由Header.Payload.Signature组成",
            "Payload部分默认加密",
            "适合存储敏感信息",
            "Signature防止令牌篡改"
        ],
        desc: "Payload是Base64编码但未加密，不应存储敏感信息"
    },
    {
        question: "下列哪些是HTTP/3的特性？",
        radios: [
            "基于UDP协议",
            "改进的多路复用",
            "0-RTT连接建立",
            "强制使用TLS 1.3"
        ],
        muti: true,
        desc: "HTTP/3基于QUIC协议（UDP），其他选项都是其特性"
    },
    {
        question: "关于RESTful API设计，错误的是：",
        radios: [
            "GET请求应该幂等",
            "资源名使用复数形式",
            "状态码表示业务错误",
            "版本号放在URL路径中"
        ],
        desc: "HTTP状态码应反映网络状态，业务错误应通过响应体表示"
    },
    {
        question: "实现长轮询（Long Polling）的关键是：",
        radios: [
            "客户端定时发送请求",
            "服务端立即返回空响应",
            "服务端保持连接直到有数据",
            "使用WebTransport协议"
        ],
        desc: "长轮询中服务端会保持连接直到数据可用或超时"
    },
    {
        question: "关于GraphQL与REST的区别，正确的是：",
        radios: [
            "GraphQL使用单一端点",
            "支持客户端按需查询字段",
            "内置缓存机制",
            "基于HTTP语义"
        ],
        muti: true,
        desc: "GraphQL本身没有内置缓存，需自行实现"
    },
    {
        question: "下列哪些是Web安全相关的头部？",
        radios: [
            "X-Frame-Options",
            "X-XSS-Protection",
            "X-Content-Type-Options",
            "X-Powered-By"
        ],
        muti: true,
        desc: "X-Powered-By是服务器信息头部，不属于安全策略"
    },
    {
        question: "关于OAuth 2.0授权流程，错误的是：",
        radios: [
            "授权码模式最安全",
            "隐式模式适合前端应用",
            "密码模式推荐用于第三方应用",
            "客户端凭证模式不需要用户参与"
        ],
        desc: "密码模式（Resource Owner Password Credentials）不应在第三方应用使用"
    },
    {
        question: "下列代码实现了什么功能？\napp.use(helmet());",
        radios: [
            "HTTP请求日志记录",
            "设置安全相关HTTP头",
            "启用Gzip压缩",
            "路由中间件"
        ],
        desc: "helmet.js是Express的安全中间件，默认设置11个安全HTTP头"
    },
    {
        question: "关于Session和Cookie的区别，正确的是：",
        radios: [
            "Session存储在服务端",
            "Cookie有大小限制",
            "Session依赖Cookie机制",
            "Cookie更安全"
        ],
        muti: true,
        desc: "Session也可以基于URL传递，Cookie默认不如Session安全"
    },
    {
        question: "下列哪些是gRPC的特性？",
        radios: [
            "基于HTTP/2",
            "使用Protocol Buffers",
            "支持双向流",
            "默认使用JSON编码"
        ],
        muti: true,
        desc: "gRPC默认使用二进制编码而非JSON"
    },
    {
        question: "关于API版本控制，错误的是：",
        radios: [
            "URL路径：/v1/resource",
            "请求头：Accept: application/vnd.api.v1+json",
            "查询参数：/resource?version=1",
            "子域名：v1.api.example.com"
        ],
        desc: "所有选项都是常见的API版本控制方案"
    },
    {
        question: "实现文件断点续传的关键技术是：",
        radios: [
            "Content-Range头",
            "File API的slice方法",
            "WebSocket二进制传输",
            "multipart/form-data编码"
        ],
        muti: true,
        desc: "WebSocket不是断点续传的必要技术"
    },
    {
        question: "关于Server-Sent Events（SSE），正确的是：",
        radios: [
            "基于HTTP协议",
            "支持服务端主动推送",
            "默认自动重连",
            "使用EventSource API"
        ],
        muti: true,
        desc: "所有选项都是SSE的正确特性"
    },
    {
        question: "下列哪些操作可能引发DNS查询？",
        radios: [
            "访问新的域名",
            "fetch()请求跨域资源",
            "WebSocket建立连接",
            "读取localStorage"
        ],
        muti: true,
        desc: "localStorage操作不涉及网络请求"
    }
];

export default questions;